package cn.zzz.openplatform.amap.model.geocode;

import cn.zzz.openplatform.amap.constant.AmapUrlConstant;
import cn.zzz.openplatform.amap.model.AmapOpenApiRequest;
import lombok.*;

/**
 * 逆地理编码请求参数
 * <a href="https://lbs.amap.com/api/webservice/guide/api/georegeo">接口文档</a>
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AmapReverseGeoCodeRequest extends AmapOpenApiRequest<AmapReverseGeoCodeResponse> {
    /**
     * 经纬度坐标（经度,纬度）
     * 必填：是
     * 规则：经度在前，纬度在后，经纬度间以","分割，小数点后不超过6位
     * 示例：116.397428,39.90923
     */
    private String location;

    /**
     * 返回附近POI类型（多个用|分隔）
     * 必填：否
     * 规则：传入POI TYPECODE，多个用"|"分隔（参考POI分类码表）
     * 注意：需extensions参数为all时生效
     */
    private String poitype;

    /**
     * 搜索半径
     * 必填：否
     * 取值范围：0~3000米
     * 默认值：1000米
     */
    private Integer radius;

    /**
     * 返回结果控制
     * 必填：否
     * 可选值：base（默认）返回基础地址信息
     * all   返回地址+POI+道路+交叉口信息
     */
    private String extensions;

    /**
     * 道路等级
     * 必填：否
     * 可选值：0 显示所有道路（默认）
     * 1 过滤非主干道路
     * 注意：需extensions参数为all时生效
     */
    private Integer roadlevel;

    /**
     * POI排序优化
     * 必填：否
     * 可选值：0 默认排序（默认值）
     * 1 居家优先
     * 2 公司优先
     * 注意：需extensions参数为all时生效
     */
    private Integer homeorcorp;

    @Override
    public Class<AmapReverseGeoCodeResponse> getResponseClass() {
        return AmapReverseGeoCodeResponse.class;
    }

    @Override
    public String getUrl() {
        return AmapUrlConstant.REVERSE_GEOCODE_URL;
    }
}
